public class L203 {
    public static void main(String[] args) {
        ListNode listNode = new ListNode(1);
        ListNode listNode2 = new ListNode(4);
        ListNode listNode3 = new ListNode(7);
        ListNode listNode4 = new ListNode(4);
        listNode.next = listNode2;
        listNode2.next = listNode3;
        listNode3.next = listNode4;

        ListNode head = new Solution().removeElements(listNode, 4);
        System.out.println(head);

    }


    static class Solution {
//        public ListNode removeElements(ListNode head, int val) {
//            ListNode listNode = new ListNode(val - 1);
//            listNode.next = head;
//            ListNode prev = listNode;
//
//            while (prev.next != null) {
//                if (prev.next.val == val) {
//                    prev.next = prev.next.next;
//                } else {
//                    prev = prev.next;
//                }
//            }
//
//            return listNode.next;
//        }

        public ListNode removeElements(ListNode head, int val) {
            if (head == null) {
                return null;
            }
            head.next = removeElements(head.next, val);
            return head.val == val ? head.next : head;
        }
    }
}
